package com.blog.wl2023.utils;

import cn.hutool.core.codec.Base64;

import java.util.HashMap;
import java.util.Map;

/**
 * @author wule
 * @date 2023-12-04  18:57
 * @desc 上传Gitee图床工具类
 */
public class GiteeImgUtil {

	/**
	 * 码云私人令牌
	 */
	public static final String ACCESS_TOKEN = "自己的";  //这里不展示我自己的了，需要你自己补充

	/**
	 * 码云个人空间名，改成自己的，如果不知道个人空间名可以看下面的图片
	 */
	public static final String OWNER = "自己的";

	/**
	 * 上传指定仓库，改成自己创建的图床仓库
	 */
	public static final String REPO = "images";

	/**
	 * 用于提交描述
	 */
	public static final String ADD_MESSAGE = "add img";

	//API
	/**
	 * 新建(POST)、获取(GET)、删除(DELETE)文件：()中指的是使用对应的请求方式
	 * %s =>  仓库所属空间地址(企业、组织或个人的地址path)  (owner)
	 * %s => 仓库路径(repo)
	 * %s => 文件的路径(path)
	 */
	public static final String API_CREATE_POST = "https://gitee.com/api/v5/repos/%s/%s/contents/%s";


	/**
	 * 生成创建(获取、删除)的指定文件路径
	 *
	 * @param fileName 文件名称
	 * @return 路径
	 */
	public static String createUploadFileUrl(String fileName) {
		//填充请求路径
		return String.format(GiteeImgUtil.API_CREATE_POST,
				GiteeImgUtil.OWNER,
				GiteeImgUtil.REPO,
				fileName);
	}



	/**
	 * 获取创建文件的请求体map集合：access_token、message、content
	 *
	 * @param multipartFile 文件字节数组
	 * @return 封装成map的请求体集合
	 */
	public static Map<String, Object> getUploadBodyMap(byte[] multipartFile) {
		HashMap<String, Object> bodyMap = new HashMap<>(3);
		bodyMap.put("access_token", GiteeImgUtil.ACCESS_TOKEN);
		bodyMap.put("message", GiteeImgUtil.ADD_MESSAGE);
		bodyMap.put("content", Base64.encode(multipartFile));
		return bodyMap;
	}

}
